#ifndef _RAISE_H_
#define _RAISE_H_
#include "python3/PythonGrammar30TreeConstants.h"
#include "ast/stmtType.h"
#include "ast/exprType.h"
#include "AstTypes.h"
class IVisitor;
class Raise;
typedef QSharedPointer<Raise> RaisePtr;

class Raise: public stmtType
{
public:
    explicit Raise(const exprTypePtr& type, const exprTypePtr& inst, const exprTypePtr& tback, const exprTypePtr& cause, int nodeId=JJTRAISE_STMT);
    virtual ~Raise();
    
    
    exprTypePtr type_();
    void setType_(const exprTypePtr& type);
    
    exprTypePtr inst();
    void setInst(const exprTypePtr& inst);
    
    exprTypePtr tback();
    void setTback(const exprTypePtr& tback);
    
    exprTypePtr cause();
    void setCause(const exprTypePtr& cause);
    
    
    virtual Ast::AstTypes type() const;
    virtual QString toString() const;
    virtual void accept(IVisitor* visitor, const SimpleNodePtr& node);
    virtual void traverse(IVisitor* visitor);
private:
    exprTypePtr _type;
    exprTypePtr _inst;
    exprTypePtr _tback;
    exprTypePtr _cause;
};




#endif